package LC;

import java.util.Arrays;

/**
 * https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/
 * Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
 * Do not allocate extra space for another array, you must do this in place with constant memory.
 * For example,
 * Given input array nums = [1,1,2],
 * Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
 * It doesn't matter what you leave beyond the new length.
 */
public class LC_026_RemoveDuplicatesfromSortedArray_Array {
    public static void main(String[] args) {
        int[] a = {1, 4, 4, 4, 5, 5, 5, 6, 7, 8, 9};
        int n = Solution.removeDuplicates(a);
        System.out.println(n);
    }

    static class Solution {
        //直接用后面的覆盖掉前面重复的，其实也是双指针问题
        static int removeDuplicates(int[] nums) {
            int len = nums.length;
            if (len == 0)
                return 0;
            int count = 1;
            for (int i = 1; i < len; i++) {
                if (nums[i] != nums[i - 1]) {
                    nums[count] = nums[i];
                    count++;
                }
            }
            System.out.println(Arrays.toString(nums));
            return count;
        }
    }
}
